1. Field of the Invention
The present invention relates to motor controls generally, and in particular to a virtual encoder for receiving a velocity input signal and producing a position reference output signal using a software algorithm that achieves system component reduction compared to an implementation solution using conventional physical encoders.
2. Discussion of the Related Art
Rotating motors are typically controlled by a motor drive that receives a desired motor speed signal and, based on the motor speed signal, produces and outputs a torque signal that is applied to the motor. Adjustment of the torque signal based on changes to the desired motor speed signal relative to the actual motor speed ensures that the motor rotates at the desired speed. However, when operating a plurality motors synchronously in an automated system, several factors exist that may cause the position of the motors to deviate from each other even though they are all operating under the same desired motor speed signal. For instance, motor inertia and other losses at each motor are non-uniform, and could cause one motor to drift from the other motors. It would thus be desirable to implement a position feedback loop, whereby the position of each motor is compared to a desired motor position so that the torque output to each individual motor may be adjusted to compensate for motor drifting.
Conventional drive systems include an optical motor encoder that detects and counts the passage of optical marking present on a disk that rotates along with the rotating load during operation. In a system utilizing several synchronous motors, the corresponding encoders are thus able to determine the position of each motor during operation as a function of the number of detected markings.
Accordingly, one possible implementation of a position feedback loop could include a conventional optical encoder in the reference path that is installed as a drive reference encoder. The drive position reference encoder would measure the desired motor speed using the rotation of a mechanical shaft on the encoder, it being appreciated that the encoder shaft would carry optical markings that correspond to the markings present on the rotating motor load. A relationship would thus exist between the passage of optical drive encoder shaft markings and the passage of optical load markings. An optical sensor present on the drive encoder could then sense the position of the shaft as the shaft rotates in response to the desired motor speed signal. Based on the sensed position of the shaft, the drive encoder would output a desired position signal that is used by the motor drive when determining the torque signal output to the motor.
However, it should be appreciated that conventional motor drives are software-based, and that implementing a physical encoder in such a system would be cumbersome and impractical. What is therefore needed is a software-based position reference encoder, that can be integrated into the firmware of an existing motor drive, and that is capable of receiving a desired motor speed signal and outputting a desired motor position signal within a predetermined margin or error.